const { contextBridge, ipcRenderer } = require('electron');

// 允许的通道列表
const ALLOWED_CHANNELS = [
    'start-browser',
    'start-monitoring',
    'stop-monitoring',
    'get-reply-config',
    'update-reply-config',
    'log-message',
    'browser-ready',
    'status-update',
    'reply-config',
    'reply-config-updated',
    'window-minimized',
    'window-restored'
];

/**
 * 检查通道是否允许
 * @param {string} channel - 通道名称
 * @returns {boolean} - 是否允许
 */
function isChannelAllowed(channel) {
    return ALLOWED_CHANNELS.includes(channel);
}

// 暴露给渲染进程的API
contextBridge.exposeInMainWorld('electron', {
    /**
     * 发送消息到主进程
     * @param {string} channel - 通道名称
     * @param {any} data - 数据
     */
    send: (channel, data) => {
        if (isChannelAllowed(channel)) {
            ipcRenderer.send(channel, data);
        } else {
            console.error(`不允许的通道: ${channel}`);
        }
    },

    /**
     * 监听来自主进程的消息
     * @param {string} channel - 通道名称
     * @param {Function} callback - 回调函数
     */
    on: (channel, callback) => {
        if (isChannelAllowed(channel)) {
            ipcRenderer.on(channel, (event, ...args) => callback(...args));
        } else {
            console.error(`不允许的通道: ${channel}`);
        }
    },

    /**
     * 移除所有监听器
     * @param {string} channel - 通道名称
     */
    removeAllListeners: (channel) => {
        if (isChannelAllowed(channel)) {
            ipcRenderer.removeAllListeners(channel);
        } else {
            console.error(`不允许的通道: ${channel}`);
        }
    }
}); 